package script;

import org.luaj.vm2.*;
import org.luaj.vm2.lib.jse.*;

public class JavaLuaInteraction {

    // 供 Lua 调用的 Java 方法
    public static class JavaCalculator {
        public int multiply(int a, int b) {
            System.out.println("[Java] 正在执行 multiply(" + a + ", " + b + ")");
            return a * b;
        }
    }

    public static void main(String[] args) {
        // 创建 Lua 上下文
        Globals globals = JsePlatform.standardGlobals();

        // 将 Java 类暴露给 Lua
        globals.set("javaCalculator", CoerceJavaToLua.coerce(new JavaCalculator()));

        // 加载 Lua 脚本
        LuaValue chunk = globals.loadfile("example.lua");

        try {
            // 执行 Lua 脚本
            chunk.call();

            // 调用 Lua 函数
            LuaValue luaAdd = globals.get("luaAdd");
            LuaValue result = luaAdd.call(LuaValue.valueOf(5), LuaValue.valueOf(3));
            System.out.println("[Java] 调用 Lua 加法结果: " + result.toint());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
